package cn.netjava.robo3d.device;

import cn.netjava.robo3d.test.Test;

import com.jme.image.Texture;
import com.jme.math.FastMath;
import com.jme.math.Vector3f;
import com.jme.renderer.ColorRGBA;
import com.jme.scene.Node;
import com.jme.scene.state.TextureState;
import com.jme.system.DisplaySystem;
import com.jme.util.TextureManager;
import com.jmex.effects.particles.ParticleFactory;
import com.jmex.effects.particles.ParticleMesh;
/**
 * 爆炸效果
 * @author Administrator
 *
 */
public class Explosion extends Node {

	private ParticleMesh pMesh;
	
	public Explosion(){
		
		this.setName("explosion");
		pMesh=ParticleFactory.buildParticles("pMesh", 200);    //新建一个粒子系统，一次喷200个粒子。
		
		pMesh.setInitialVelocity(0.2f);                                     //初始喷射速度
		pMesh.setEmissionDirection(new Vector3f(0,-1,0));    //喷射方向
        pMesh.setMinimumAngle(180*FastMath.DEG_TO_RAD); //设置喷射范围角度，这里很关键。
        																				  //把喷射范围设成一个圆周就是爆炸效果了
        																				  //就是这里有点不能理解的是 180度就够了。
        																				  //而且还有min 和max两个方法
        																				  //下面的lifetime也一样有两个方法
        pMesh.setMaximumLifeTime(1f);
        pMesh.setSpeed(5f);         //喷射速度
        pMesh.setStartSize(7f);  //起始大小
        pMesh.setEndSize(1f);      //生命结束时的大小，在这之间应该是均匀变化的
        
        //给粒子加上纹理图，每个粒子的形状就跟这幅图一样了
        DisplaySystem display=DisplaySystem.getDisplaySystem();
        TextureState ts1=display.getRenderer().createTextureState();
        Texture tx=TextureManager.loadTexture(Explosion.class.getClassLoader().getResource(
        		"cn/netjava/robo3d/images/flaresmall.jpg"));
       
        ts1.setTexture(tx);
         ts1.setEnabled(true);
         
        pMesh.setRenderState(ts1);
        pMesh.setStartColor(ColorRGBA.red);
		pMesh.setLocalScale(0.03f);
		this.attachChild(pMesh);
	}
	
	
}
